/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package WebServices;

import DataTypes.DataEvento;
import DataTypes.DataGrupo;
import Interfaces.Factory;
import Interfaces.ICrearGrupo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Logger;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.xml.ws.Endpoint;

/**
 *
 * @author Sebas
 */
@WebService
@SOAPBinding(style = Style.RPC, parameterStyle = ParameterStyle.WRAPPED)
public class CtrlCrearGrupoWS {

    private Endpoint endpoint = null;
    private Logger log = Logger.getLogger(CtrlCrearGrupoWS.class.getName());

    @WebMethod(exclude = true)
    public void publicar() {
        Propiedades propiedades = Propiedades.getInstance();
        String nomCtrl = "CtrlCrearGrupo";
        String camino = "http://" + propiedades.getServer() + ":" + propiedades.getPuerto() + "/" + nomCtrl;
        log.info("publicando el endpoint "+nomCtrl);
        endpoint = Endpoint.publish(camino, this);
        log.info("Endpoint "+nomCtrl+" publicado en " + camino);
    }

    @WebMethod(exclude = true)
    public Endpoint getEndpoint() {
        return endpoint;
    }

    @WebMethod
    public void crearGrupo(@WebParam(name = "dg")DataGrupo dg) {
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ctrlGrupo.crearGrupo(dg);
    }

    @WebMethod
    public DataGrupo[] listarGrupos() {
        
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ArrayList<DataGrupo> listG = ctrlGrupo.listarGrupos();
        Iterator<DataGrupo> it = listG.iterator();
        int tamanio = listG.size();
        DataGrupo [] datG = new DataGrupo[tamanio];
        int i = 0 ;
        while(it.hasNext()){
            
            datG[i] = it.next();
            i++;
        }
        return datG;
    }

    @WebMethod
    public void agregarEvento(@WebParam(name = "even")DataEvento even, @WebParam(name = "usu")String usu) {
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ctrlGrupo.agregarEvento(even, usu);
    }

    @WebMethod
    public void eliminarGrupo(@WebParam(name = "nombre")String nombre) {
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ctrlGrupo.eliminarGrupo(nombre);
    }

    @WebMethod
    public void bloquearContenidoGrupo(@WebParam(name = "grupo")String grupo, @WebParam(name = "titContenido")String titContenido) {
        ICrearGrupo ctrlGrupo = Factory.getInstance().getCrearGrupos();
        ctrlGrupo.bloquearContenidoGrupo(grupo, titContenido);
    }
}
